package io.xccit.train.common.util;

import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;

/**
 * @author CH_ywx
 * @version 1.0
 * @create 2024/11/6
 * <p>雪花算法工具类</p>
 */
public class SnowFlakeUtil {
    // 定义工作机器ID
    private static final long WORKER_ID = 1;
    // 定义数据中心ID
    private static final long DATA_CENTER_ID = 1;

    // 单例模式，保证全局唯一
    private static Snowflake snowflake = IdUtil.createSnowflake(WORKER_ID, DATA_CENTER_ID);

    // 私有构造方法，防止实例化
    private SnowFlakeUtil() {
    }

    /**
     * 获取下一个ID
     * @return 雪花算法生成的ID
     */
    public static synchronized long nextId() {
        return snowflake.nextId();
    }

    /**
     * 获取下一个ID的字符串形式
     * @return 雪花算法生成的ID的字符串形式
     */
    public static synchronized String nextIdStr() {
        return snowflake.nextIdStr();
    }
}
